﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;

namespace MigColetaMinMax
{

    /// <summary>
    /// Classe para tratamento de exceções (erros) personalizadas.
    /// </summary>
    public class csException : Exception
    {
        #region Fields
            private string _exceptionmessage;
        #endregion

        #region Propriedades
            public string ExceptionMessage
            {
                get { return _exceptionmessage; }
                set { _exceptionmessage = value; }
            }
        #endregion

        #region Construtor
        
        public csException() { }

        /// <summary>
        /// Construtor da classe, este popula a field _exceptionmessage, usado para armazenar a mensagem original da exception.
        /// </summary>
        /// <param name="excep">Objeto Exception</param>

        public csException(Exception excep)
        {
            ExceptionMessage = excep.Message;
        }

        /// <summary>
        /// Construtor da classe, este popula a field _exceptionmessage, usado para armazenar a mensagem da exception.
        /// Use msgDefinida(int) para melhor manutenção desta classe.
        /// </summary>
        /// <param name="excepmsg">String de exceção especifica</param>
        public csException(string excepmsg)
        {
            ExceptionMessage = excepmsg;
        }

        #endregion

        #region Metodos

        /// <summary>
        /// Método que retorna mensagens de procedimentos inválidos (cath)
        /// </summary>
        /// <param name="tipomsg">
        /// Código controle do tipo de mensagem que será retornada, especifico da exceção.
        /// 1 – Dados inválidos, verifique a quantidade de caracteres digitados.
        /// 2 – Usuário não autenticado.
        /// 3 – Erro ao conectar com banco de dados.
        /// 4 – Dados inválidos.
        /// 5 – Erro de banco. Operação não foi concluída.
        /// 6 – Erro: i não é maior que j (Mensagem teste)
        /// </param>
        /// <returns>String com mensagem</returns>
        public static string MsgDefinida(int tipomsg)
        {
            string msg = "Operação inválida. Tente novamente!";
            
            switch (tipomsg)
            {
                case 1:
                    msg = "Erro: Dados inválidos, verifique a quantidade de caracteres digitados.";
                    break;
                case 2:
                    msg = "Erro: Usuário não autenticado.";
                    break;
                case 3:
                    msg = "Erro DB: Não conectou com banco de dados."; ///usada em: cMensagem
                    break;
                case 4:
                    msg = "Erro: Dados inválidos."; ///usada em: cMensagem
                    break;
                case 5:
                    msg = "Erro DB: Operação não foi concluída."; ///usada em: cMensagem
                    break;
                case 6:
                    msg = "Erro: i não é maior que j (Mensagem teste)."; ///usada em: Default.aspx.cs
                    break;
                case 7:
                    msg = "É obrigatório informar os dados nesse campo.";
                    break;
                case 8:
                    msg = "Formato para este campo está inválido.";
                    break;
                case 9:
                    msg = "Esse formato excedeu o tamanho limite para este campo.";
                    break;
                default:
                    break;
            }

            return msg;
        }

        #endregion

    }

}
